package com.mark.basic.listener;

import com.mark.basic.service.IPermissionScanService;
import com.mark.system.service.IPermissionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * 自定义权限扫描Listener
 * 项目启动结束后立马执行，扫描PerAuthorize注解，向permission表中增加权限
 */
@WebListener//申明自定义的web监听器，被容器注册和使用
@Slf4j // 打日志
class PermissionScanInitListener implements ServletContextListener {
    @Autowired
    private IPermissionScanService permissionScanService; // 高度封装
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // 有可能我们的业务操作耗时，或者造成主进程等待
        // 为了避免这种情况，我们需要开启线程来跑业务，不影响项目启动
        new  Thread(new Runnable() {
            @Override
            public void run() {
                log.info("自动扫描开始");
                // 开启自动扫描权限，加权限
                permissionScanService.scan();
                log.info("自动扫描结束");
            }
        }).start();

    }
}